From: Jeroen van der Heijden Date: Thu, 17 May 2018 11:28:09 +0000 (+0200) Subject: Fix > 100 percent X-Git-Tag: archive/raspbian/2.0.44-1+rpi1~1^2~3^2~9^2~30 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=c124ab5401cda7195b2c3135ef5bcc02876f1368;p=siridb-server.git Fix > 100 percent --- diff --git a/ChangeLog-2.0.27 b/ChangeLog-2.0.27 index ba7d8dfb..594463d2 100644 --- a/ChangeLog-2.0.27 +++ b/ChangeLog-2.0.27 @@ -19,4 +19,11 @@ * Allow all (*) for selecting series. Keyword 'all' replaces 'points' which is now a deprecated keyword. - * Solved compiler warnings. (issue #96) \ No newline at end of file + * Solved compiler warnings. (issue #96) + + * Added the following server statistics properties: + - active_tasks: returns the number of active tasks for the current database + - idle_time: returns the seconds the database was idle since uptime. + - idle_percentage: returns the percentage of idle time since uptime. + (Note: idle mean no active tasks for the current database) + \ No newline at end of file diff --git a/src/siri/db/db.c b/src/siri/db/db.c index f47fe8e3..ee5234b6 100644 --- a/src/siri/db/db.c +++ b/src/siri/db/db.c @@ -75,9 +75,13 @@ int32_t siridb_get_uptime(siridb_t * siridb) int8_t siridb_get_idle_percentage(siridb_t * siridb) { double uptime = (double) siridb_get_uptime(siridb); - return (uptime) + int8_t idle = (uptime) ? (int8_t) round(siridb->tasks.idle_time / uptime * 100.0f) : 0; + /* idle time can technically be larger since we start a database before we + * mark the server as started. + */ + return (idle > 100) ? 100 : idle; } diff --git a/test/test_server.py b/test/test_server.py index e5435c42..31fff493 100644 --- a/test/test_server.py +++ b/test/test_server.py @@ -61,7 +61,7 @@ class TestServer(TestBase): result = await self.client1.query('list servers log_level') self.assertEqual(result.pop('servers'), [['info'], ['info']]) - result = await self.client1.query('list servers active_tasks where active_tasks >= 0 and idle_time >= 0 and idle_percentage <= 100') + result = await self.client1.query('list servers active_tasks where active_tasks == 1 and idle_time >= 0 and idle_percentage <= 100') self.assertEqual(result.pop('servers'), [[1], [1]]) result = await self.client0.query('alter servers where active_handles > 1 set log_level debug')